package com.ecommerce.common.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Redis配置属性类
 * 用于统一管理Redis相关配置属性
 * 
 * @author ecommerce
 * @since 1.0.0
 */
@Data
@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {
    
    /**
     * Redis服务器主机地址
     */
    private String host = "localhost";
    
    /**
     * Redis服务器端口
     */
    private int port = 6379;
    
    /**
     * 连接超时时间（毫秒）
     */
    private int timeout = 2000;
    
    /**
     * 密码
     */
    private String password;
    
    /**
     * 数据库索引
     */
    private int database = 0;
    
    /**
     * 连接池配置
     */
    private Pool pool = new Pool();
    
    /**
     * 连接池配置内部类
     */
    @Data
    public static class Pool {
        /**
         * 最大连接数
         */
        private int maxActive = 8;
        
        /**
         * 最大空闲连接数
         */
        private int maxIdle = 8;
        
        /**
         * 最小空闲连接数
         */
        private int minIdle = 0;
        
        /**
         * 连接池最大阻塞等待时间（毫秒）
         */
        private long maxWait = -1;
    }
}